using System.Collections.Generic;
using Common;

namespace CSC440TeamOne.MyHealth
{
    /// <summary>
    /// Name - IMyHealthController.cs
    /// Description - 
    /// Programmer - Matthew Mitchell
    /// Date coded - 11/27/2011
    /// Arguments - None
    /// Variables - None
    /// Files accessed by this code artifact - None
    /// Files changed by this code artifact - None
    /// I/O - None
    /// Error Handling - None
    /// Modifications -
    ///     1.0 - Initial coding
    /// Known Faults -
    ///     1.0 - None known
    /// </summary>
    public interface IMyHealthController
    {
        User FindUserById(string id);

        void AddUser(User user);

        /// <summary>
        /// Loads the daily entry view for current user.
        /// </summary>
        /// <returns></returns>
        DailyEntryViewModel LoadDailyEntryViewForCurrentUser();

        /// <summary>
        /// Saves the daily entry view model.
        /// </summary>
        /// <param name="model">The model.</param>
        void SaveDailyEntryViewModel(DailyEntryViewModel model);

        /// <summary>
        /// Loads the health progress for current user.
        /// </summary>
        /// <returns></returns>
        MyProgressViewModel LoadHealthProgressForCurrentUser();

        /// <summary>
        /// Loads the health config for current user.
        /// </summary>
        /// <returns></returns>
        MyHealthGoalConfigViewModel LoadHealthConfigForCurrentUser();

        /// <summary>
        /// Saves the health config.
        /// </summary>
        /// <param name="model">The model.</param>
        void SaveHealthConfig(MyHealthGoalConfigViewModel model);

        List<Question> LoadAllQuestions();

        void SaveQuestionaireAnswer(int questionID, string answer);

        SubmitRecipeModel getNewRecipeViewModel();

        void parse(SubmitRecipeModel model);

        ProcessRegistrationModel LoadProcessRegistrationModel();

        /// <summary>
        /// Loads the MyHealthSnapshotModel
        /// </summary>
        /// <returns></returns>
        MyHealthSnapshotModel LoadMyHealthSnapshotModelForCurrentUser();

        User LoadCurrentUser();
    }
}
